import {
	createSSRApp
} from "vue";
import App from "./App.vue";
// import {useTowxml} from '@/wxcomponents/towxml/index.js'


export function createApp() {
	const app = createSSRApp(App)
	// app.config.globalProperties.$towxml = useTowxml

	// 定义不需要登录验证的白名单路径
	const whiteList = [
		'/pages/login/login',// 登录页面
		'/pages/login/register',
		'/pages/user/index'
	]

	/**
	 * 检查登录状态
	 * @param {string} url - 目标页面的 URL
	 * @returns {boolean} - 是否允许跳转
	 */
	function checkLogin(url) {
		// 检查目标页面是否在白名单中
		if (whiteList.some(path => url.indexOf(path) !== -1)) {
			return true
		}
		
		// 从本地存储获取用户信息
		const userInfo = uni.getStorageSync('userInfo')
		
		// 如果没有登录信息，重定向到登录页面
		if (!userInfo) {
			uni.showToast({
				title: '请先登录',
				icon: 'none',
				duration: 800
			})
			return false
		}
		
		return true
	}

	// 页面跳转拦截器
	uni.addInterceptor('navigateTo', {
		invoke(e) {
			if (!checkLogin(e.url)) {
				uni.redirectTo({
					url: '/pages/login/login'
				})
				return false
			}
			return true
		}
	})

	// 页面重定向拦截器
	uni.addInterceptor('redirectTo', {
		invoke(e) {
			if (!checkLogin(e.url)) {
				uni.redirectTo({
					url: '/pages/login/login'
				})
				return false
			}
			return true
		}
	})

	// 页面重启动拦截器
	uni.addInterceptor('reLaunch', {
		invoke(e) {
			if (!checkLogin(e.url)) {
				uni.redirectTo({
					url: '/pages/login/login'
				})
				return false
			}
			return true
		}
	})

	// 返回应用实例
	return {
		app
	};
}
